package com.ruoyi.project.product.style.controller;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.project.product.style.domain.Style;
import com.ruoyi.project.product.style.service.IStyleService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 产品风格操作处理
 * @author Mai
 */
@Controller
@RequestMapping("product/style")
public class StyleController extends BaseController {

    private String prefix="product/style";

    @Autowired
    private IStyleService styleService;

    /**
     * 跳转到查询页面
     * @return
     */
    @GetMapping()
    @RequiresPermissions("product:style:view")
    public String style(){
        return prefix + "/style";
    }

    /**
     * 产品风格查询
     * @param style
     * @return
     */
    @ResponseBody
    @PostMapping("/list")
    @RequiresPermissions("product:style:list")
    public TableDataInfo list(Style style){
        startPage();
        List<Style> list = styleService.selectStyleList(style);
        return getDataTable(list);
    }

    @GetMapping("/add")
    public String add(){
        return prefix + "/add";
    }

    /**
     * 产品风格新增
     * @param style
     * @return
     */
    @ResponseBody
    @PostMapping("/add")
    @RequiresPermissions("product:style:add")
    public AjaxResult addSave(Style style){
        //判断1是否等于返回的值，如果是等于1 ，就表中存在，不能添加数据。
        if(UserConstants.SERIES_NAME_NOT_UNIQUE.equals(styleService.checkStyleNameUnique(style))){
            return error("新增风格"+style.getStyleName()+"失败，风格名称已存在");
        }
        return toAjax(styleService.insertStyle(style));
    }

    /**
     * 风格修改
     * @param styleId
     * @param mmap
     * @return
     */
    @GetMapping("/edit/{styleId}")
    public String edit(@PathVariable("styleId") Long styleId, ModelMap mmap){
        mmap.put("style",styleService.selectStyleById(styleId));
        return prefix + "/edit";
    }

    /**
     * 风格修改保存
     * @param style
     * @return
     */
    @ResponseBody
    @PostMapping("/edit")
    @RequiresPermissions("product:style:edit")
    public AjaxResult editSave(Style style){
        return toAjax(styleService.updateStyle(style));
    }



    /**
     * 风格批量删除操作
     * @param ids
     * @return
     */
    @ResponseBody
    @PostMapping("/remove")
    @RequiresPermissions("product:style:remove")
    public AjaxResult remove(String ids){
        try {
            return toAjax(styleService.deleteStyleByIds(ids));
        } catch (Exception e) {
            e.printStackTrace();
            return error(e.getMessage());
        }
    }

    /**
     * 校验风格名称是否存在
     * @param style
     * @return
     */
    @ResponseBody
    @PostMapping("/checkStyleNameUnique")
    public String checkStyleNameUnique(Style style){
        return styleService.checkStyleNameUnique(style);
    }

}
